home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 July / EnigmA AMIGA RUN 20 (1997)(G.R. Edizioni)(IT)[!][issue 1997-07 & 08][EAR-CD IV].iso / earcd / dev / amos / moreusel.lha / GlenzCubeVec.AMOS / GlenzCubeVec.amosSourceCode
AMOS Source Code  |  1997-04-18  |  3KB  |  134 lines

  1. ' *************************************
  2. ' *                                   *
  3. ' *        Glenz Cube Vec V1.3        *
  4. ' *      Written by Chris Hodges      *
  5. ' *                                   *
  6. ' *************************************
  7. '
  8. Gosub INITSCREEN
  9. Gosub INITPOINTS
  10. WX=0 : WY=0 : WZ=0
  11. S=0 : GLENZ=0
  12. Screen 1
  13. Gosub CALCCOORDS
  14. Do 
  15.   If Inkey$=" " Then GLENZ=1-GLENZ
  16.   Gosub DRAOBJ
  17.   Screen Swap 0
  18.   Gosub CALCCOORDS
  19.   S=1-S
  20.   Wait Vbl 
  21. Loop 
  22. End 
  23. INITPOINTS:
  24.   Read ANZP
  25.   Dim PT(ANZP,2),CM(ANZP,1)
  26.   For A=1 To ANZP
  27.     Read PT(A,0),PT(A,1),PT(A,2)
  28.   Next 
  29.   Read ANZL
  30.   Dim LC(ANZL)
  31.   For A=1 To ANZL
  32.     Read LC(A)
  33.   Next 
  34.   Dim DB(6,3,1)
  35.   For A=0 To(ANZL/4)-1
  36.     DB(A,0,0)=319 : DB(A,1,0)=255 : DB(A,2,0)=0 : DB(A,3,0)=0
  37.     DB(A,0,1)=319 : DB(A,1,1)=255 : DB(A,2,1)=0 : DB(A,3,1)=0
  38.   Next 
  39. Return 
  40. INITSCREEN:
  41.   Screen Open 1,320,256,2,0 : Screen Hide 
  42.   Curs Off : Flash Off : Paper 0 : Pen 1 : Cls 
  43.   Screen Open 0,320,256,64,0 : Screen To Front 1
  44.   Curs Off : Flash Off : Paper 0 : Pen 63 : Cls 0
  45.   Centre "Press Space to toggle Glenz"
  46.   Dim LG(5)
  47.   For A=0 To 5 : LG(A)=Logbase(A) : Next 
  48.   Dim CL(4)
  49.   CL(0)=-$411 : CL(1)=-$141 : CL(2)=-$114 : CL(3)=$22 : CL(4)=$220
  50.   For A=0 To 31
  51.     C=$AAA
  52.     For B=0 To 4
  53.       If Extension_8_04F8(B) and A Then C= Extension_8_0EE8(C,CL(B),$0 To $FFF)
  54.     Next 
  55.     Colour A,C
  56.   Next 
  57.   Double Buffer 
  58.   Autoback 0
  59. Return 
  60. CALCCOORDS:
  61.    Extension_8_1122 Extension_8_1106(WZ,250), Extension_8_1106(WY,250),2100+ Extension_8_1106(WX,1900)
  62.   Add WX,9
  63.   Add WY,10
  64.   Add WZ,11
  65.    Extension_8_1138 WX,WY,WZ
  66.    Extension_8_1152 
  67.   For A=1 To ANZP
  68.     CM(A,0)= Extension_8_1168(PT(A,0),PT(A,1),PT(A,2))+160
  69.     CM(A,1)= Extension_8_1184 +128
  70.   Next 
  71. Return 
  72. DRAOBJ:
  73.   BP=0
  74.   For A=1 To ANZL Step 4
  75.     MX1=319 : MY1=255 : MX2=0 : MY2=0
  76.     X1=CM(LC(A),0) : Y1=CM(LC(A),1)
  77.     X2=CM(LC(A+1),0) : Y2=CM(LC(A+1),1)
  78.     X3=CM(LC(A+2),0) : Y3=CM(LC(A+2),1)
  79.     If GLENZ=0
  80.       C=(X3-X1)*(Y2-Y1)-(X2-X1)*(Y3-Y1)
  81.     Else 
  82.       C=-1
  83.     End If 
  84.     If C<0
  85.        Extension_8_1016 X1,Y1 To X2,Y2,1,-1
  86.       X4=CM(LC(A+3),0) : Y4=CM(LC(A+3),1)
  87.        Extension_8_1016 X2,Y2 To X3,Y3,1,-1
  88.       MX1=Max(Min(Min(Min(Min(Min(X1,MX1),X2),X3),X4),319),0)
  89.       MY1=Max(Min(Min(Min(Min(Min(Y1,MY1),Y2),Y3),Y4),255),0)
  90.        Extension_8_1016 X3,Y3 To X4,Y4,1,-1
  91.       MX2=Min(Max(Max(Max(Max(Max(X1,MX2),X2),X3),X4),0),319)
  92.       MY2=Min(Max(Max(Max(Max(Max(Y1,MY2),Y2),Y3),Y4),0),255)
  93.        Extension_8_1016 X4,Y4 To X1,Y1,1,-1
  94.       BX1=Min(MX1,DB(BP,0,S)) : BY1=Min(MY1,DB(BP,1,S))
  95.       BX2=Max(MX2,DB(BP,2,S)) : BY2=Max(MY2,DB(BP,3,S))
  96.       If BX2>BX1 and BY2>BY1
  97.          Extension_8_1042 1,0,BX1,BY1,BX2+1,BY2+1 To 0,BP
  98.       End If 
  99.       DB(BP,0,S)=MX1 : DB(BP,1,S)=MY1 : DB(BP,2,S)=MX2 : DB(BP,3,S)=MY2
  100.       If MX2>MX1 and MY2>MY1
  101.          Extension_8_121C 1,0,MX1,MY1 To MX2+1,MY2+1
  102.       End If 
  103.     Else 
  104.       If DB(BP,2,S)>DB(BP,0,S) and DB(BP,3,S)>DB(BP,1,S)
  105.          Extension_8_121C 0,BP,DB(BP,0,S),DB(BP,1,S) To DB(BP,2,S)+1,DB(BP,3,S)+1
  106.       End If 
  107.       DB(BP,0,S)=319 : DB(BP,1,S)=255 : DB(BP,2,S)=0 : DB(BP,3,S)=0
  108.     End If 
  109.     Inc BP
  110.   Next 
  111. Return 
  112. '  1_____2   
  113. ' 5/____/| 
  114. ' | |  |6| 
  115. ' |4|__|_|3  
  116. ' |/___|/
  117. ' 8    7 
  118. Data 8
  119. Data -100,-100,-100
  120. Data 100,-100,-100
  121. Data 100,-100,100
  122. Data -100,-100,100
  123. Data -100,100,-100
  124. Data 100,100,-100
  125. Data 100,100,100
  126. Data -100,100,100
  127. ' Axi
  128. Data 6*4
  129. Data 1,2,6,5
  130. Data 4,3,2,1
  131. Data 2,3,7,6
  132. Data 3,4,8,7
  133. Data 4,1,5,8
  134. Data 6,7,8,5